package com.example.tests;

import org.junit.*;

import com.example.tests.pages.HomePage;
import com.example.tests.pages.LoginPage;
import com.example.tests.pages.MyPageFactory;

import static org.junit.Assert.*;

public class LoginTest extends BrowserTest {

	@Test
	public void testLoginSuccess() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class).login(admin)
				.IsLoginSuccessfull();
		assertTrue(result);
		result = MyPageFactory.getPage(driver, HomePage.class)
				.getLogoutAlertText()
				.matches("^Are you sure you want to log out[\\s\\S]$");
		assertTrue("Проверка текста сообщения о выходе", result);
	}

	@Test
	public void testLoginFailed() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class)
				.loginUnsuccesfullAs(admin.getUsername(), "admmm")
				.getLoginErrorText()
				.matches("Incorrect user name or password");
		assertTrue("Проверка обработки ошибки ввода пароля", result);
	}
	
	@Test
	public void testLoginErrorClassForUsername() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class).login()
				.isErrorClassAppliedForUsername();
		assertTrue("Проверка изменения класса поля ввода имени пользователя",
				result);
	}
	
	@Test
	public void testLoginErrorClassForPassword() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class).login()
				.isErrorClassAppliedForPassword();
		assertTrue("Проверка изменения класса поля ввода пароля", result);
	}
	
	@Test
	public void testLoginUsernameWarningPresent() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class).login()
				.isUsernameWarningPresent();
		assertTrue("Проверка появления иконки предупреждения для поля username", result);
	}
	
	@Test
	public void testLoginPasswordWarningPresent() throws Exception {
		boolean result;
		result = MyPageFactory.getPage(driver, LoginPage.class).login()
				.isPasswordWarningPresent();
		assertTrue("Проверка появления иконки предупреждения поля password", result);
	}
}
